/**
 * url：https://101.zoo.team/zi-fu-chuan/zi-fu-chuan-part-2-bao-shu-fan-zhuan-zi-fu-chuan-he-zi-fu-chuan-zhong-de-di-yi-ge-wei-yi-zi-fu#zi-fu-chuan-zhong-de-di-yi-ge-wei-yi-zi-fu
 * 
 * 给定一个字符串，找到它的第一个不重复的字符，并返回它的索引。如果不存在，则返回-1
 * 
 * 示例1：
 * 输入："leetcode"
 * 输出：0
 * 
 * 示例2：
 * 输入："loveleetcode"
 * 输出：2
 * 
 * 示例3：
 * 输入："xdf"
 * 输出：-1
 * 
 */

/**
 * 库函数
 */

const firstUniqChar1 = (str) => {
    for (let i = 0 ; i < str.length ; i++) {
        if (str.indexOf(str[i]) === str.lastIndexOf(str[i])) {
            return i;
        }
    }
    return -1
}

/**
 * 哈希
 */

const firstUniqChar2 = (str) => {
    let maps = {}
    // 遍历循环str, 记录个字符串出现几次
    for (let i = 0 ; i < str.length ; i++) {
        maps[str[i]] = ++maps[str[i]] || 1
    }
    
    // 遍历循环str, 找出maps中只出现一次的字符的下标
    for (let i = 0 ; i < str.length ; i++) {
        if (maps[str[i]] === 1) {
            return i
        }
    }
    
    return -1
}